/*
* Conditions Of Use
*
* This software was developed by employees of the Sigmatrix(Beijing) Corporation.
* This software is provided by sigmatrix as a service and is expressly
* provided "AS IS."  Sigmatrix MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED
* OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT
* AND DATA ACCURACY.  Sigmatrix does not warrant or make any representations
* regarding the use of the software or the results thereof, including but
* not limited to the correctness, accuracy, reliability or usefulness of
* the software.
*
* Permission to use this software is contingent upon your acceptance
* of the terms of this agreement.
*
*/
package com.sigmatrix.h5.service;

import java.util.Map;

import com.sigmatrix.h5.dto.InStorageData;
import com.sigmatrix.h5.entity.InStorage;
import com.sigmatrix.h5.exception.ServiceException;
import com.sigmatrix.h5.page.PageBean;
import com.sigmatrix.h5.response.Response;
import com.sigmatrix.h5.service.common.BaseService;
import com.sigmatrix.h5.web.vo.BaseInStorageVo;
import com.sigmatrix.h5.web.vo.InStorageAddVo;
import com.sigmatrix.h5.web.vo.InStorageListVo;
import com.sigmatrix.h5.web.vo.InStoragePageVo;
import com.sigmatrix.h5.web.vo.InStorageUpLoad;
import com.sigmatrix.h5.web.vo.InStorageUpLoadVo;
import com.sigmatrix.h5.web.vo.InStorageVo;

/**
 *@ClassName: InStorageService
 *@Description: 入库单业务层接口
 *@author youjun
 *@date 2017-07-06 14:18:28
 */
public interface InStorageService extends BaseService<InStorageData> {

	/**
	 *@Title: findListByPage
	 *@Description: 分页查询入库单列表
	 *@return Response
	 *@author youjun
	 *@date 2017-07-06 14:18:28
	 *@param pageBean
	 *@param inStorageVo
	 *@param map
	 */
	Response findListByPage(PageBean<InStorageData> pageBean, InStoragePageVo inStorageVo,
			Map<String, Object> map) throws ServiceException;

	/**
	 *@Title: findById
	 *@Description: 根据主键查找入库单包含明细
	 *@return Response
	 *@author youjun
	 *@date 2017-07-06 14:18:28
	 *@param inStorageId 入库单ID
	 *@param baseRequest
	 * @throws ServiceException 
	 */
	Response findById(final String eseCode, final Long inStorageId) throws ServiceException;

	/**
	 *@Title: save
	 *@Description: 保存入库单
	 *@return Response
	 *@author youjun
	 *@date 2017-07-06 14:18:28
	 *@param inStorageVo
	 *@return
	 */
	Response save(InStorageAddVo inStorageVo) throws ServiceException;
	/**
	 * 
	 *@Title: saveAuto
	 *@Description: TODO()
	 *@return Response
	 *@author gaomingkai
	 *@date 2018年1月19日 下午2:23:23
	 *@param inStorageVo
	 *@return
	 *@throws ServiceException
	 */
	Response saveAuto(InStorageAddVo inStorageVo) throws ServiceException;

	/**
	 *@Title: findListByCondition
	 *@Description: 根据条件查询入库单列表
	 *@return Response
	 *@author youjun
	 *@date 2017-07-06 14:18:28
	 *@param inStorageVo
	 *@param isQueryDetail 是否查询详情
	 *@return
	 *@throws ServiceException
	 */
	Response findListByCondition(InStorageVo inStorageVo, boolean isQueryDetail) throws ServiceException;

	/**
	 *@Title: getChannelTypeDesc
	 *@Description: TODO()
	 *@return String
	 *@author youjun
	 *@date 2017年7月6日 下午3:27:37
	 *@param inStorageVo
	 *@return
	 */
	String getChannelTypeDesc(InStorageVo inStorageVo);
	
	/**
	 *@Title: getChannelTypeDesc
	 *@Description: 获取渠道类型描述
	 *@return String
	 *@date 2017年9月10日 下午6:27:29
	 *@param channelType
	 */
	String getChannelTypeDesc(final Short channelType);

	/**
	 *@Title: findForSync
	 *@Description: 同步入库单查询
	 *@return Response
	 *@date 2017年9月10日 下午6:38:26
	 *@param vo
	 *@throws ServiceException
	 */
	Response findForSync(InStorageListVo vo) throws ServiceException;

	
	/**
	 *@Title: update
	 *@Description: 上传接口
	 *@return Response
	 *@date 2017年9月19日 下午8:43:06
	 *@param inStorageVo
	 *@throws ServiceException
	 */
	Response update(final InStorageUpLoadVo inStorageVo) throws ServiceException;
	/**
	 * 
	 *@Title: updateAuto
	 *@Description: TODO()
	 *@return Response
	 *@author gaomingkai
	 *@date 2018年1月19日 下午4:15:28
	 *@param inStorageVo
	 *@return
	 *@throws ServiceException
	 */
	Response updateAuto(final InStorageUpLoadVo inStorageVo) throws ServiceException;

	/**
	 *@Title: colse
	 *@Description: TODO()
	 *@return Response
	 *@author youjun
	 *@date 2017年8月23日 下午5:11:06
	 *@param baseInStorageVo
	 *@return
	 */
	Response colse(BaseInStorageVo baseInStorageVo) throws ServiceException;
	/**
	 * \
	 *@Title: findByInStorageId
	 *@Description: TODO()
	 *@return InStorage
	 *@author gaomingkai
	 *@date 2018年1月11日 下午3:45:11
	 *@param id
	 *@param eseCode
	 *@return
	 *@throws ServiceException
	 */
	InStorage findByInStorageId(final Long id, final String eseCode) throws ServiceException;
	/**
	 * 
	 *@Title: upload
	 *@Description: TODO()
	 *@return void
	 *@author gaomingkai
	 *@date 2018年1月11日 下午3:48:49
	 *@param inStorageVo
	 *@throws ServiceException
	 */
	void upload(InStorageUpLoadVo inStorageUpLoadVo) throws ServiceException;
	
	/**
	 * 
	 *@Title: verification
	 *@Description: TODO()
	 *@return Response
	 *@author gaomingkai
	 *@date 2017年12月19日 下午3:48:36
	 *@param storageUpLoad
	 *@return
	 *@throws ServiceException
	 */
	Response verification(final InStorageUpLoad inStorageUpLoad) throws ServiceException;
	/**
	 * 
	 *@Title: check
	 *@Description: TODO()
	 *@return Response
	 *@author gaomingkai
	 *@date 2018年2月6日 上午9:53:59
	 *@param inStorageUpLoad
	 *@return
	 *@throws ServiceException
	 */
	Response check(final InStorageUpLoad inStorageUpLoad) throws ServiceException;
	
	/**
	 *@Title: update
	 *@Description: 上传接口
	 *@return Response
	 *@date 2017年9月19日 下午8:43:06
	 *@param inStorageVo
	 *@throws ServiceException
	 */
	Response receipt(final InStorageUpLoad inStorageUpLoad) throws ServiceException;
	/**
	 * 
	 *@Title: goods
	 *@Description: TODO()
	 *@return Response
	 *@author gaomingkai
	 *@date 2018年2月5日 下午4:01:17
	 *@param inStorageUpLoad
	 *@return
	 *@throws ServiceException
	 */
	Response goods(final InStorageUpLoad inStorageUpLoad) throws ServiceException;
	/**
	 * 
	 *@Title: checkdealer
	 *@Description: TODO()
	 *@return Response
	 *@author gaomingkai
	 *@date 2018年2月5日 下午5:30:48
	 *@param inStorageUpLoad
	 *@return
	 *@throws ServiceException
	 */
	Response checkdealer(final InStorageUpLoad inStorageUpLoad) throws ServiceException;
	/**
	 * 
	 *@Title: receiptInStorage
	 *@Description: TODO()
	 *@return Response
	 *@author gaomingkai
	 *@date 2018年3月9日 上午11:23:40
	 *@param inStorageUpLoad
	 *@return
	 *@throws ServiceException
	 */
	Response receiptInStorage(final InStorageUpLoad inStorageUpLoad) throws ServiceException;
	
}
